//package com.sky.utils;
//
//
//import com.alibaba.fastjson.JSONObject;
//import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
//import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
//import com.aliyuncs.DefaultAcsClient;
//import com.aliyuncs.IAcsClient;
//
//import com.aliyuncs.exceptions.ClientException;
//import com.aliyuncs.profile.DefaultProfile;
//import com.aliyuncs.profile.IClientProfile;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Service;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 阿里云短信服务
// * @author zy
// * @date 2022/6/27 10:45
// **/
//@Service
//@Slf4j
//public class SmsAliyunUtil {
//
//    private static final String ACCESS_KEY_ID = "LTAI5tGfKuYuGu6jxfikD2gf";
//
//    private static final String ACCESS_KEY_SECRET = "Xr8hdgDpuIbpBLzSYExJDNOVtGTp2A";
//
//    private static final String SIGN_NAME  =  "普仁医连网";
//
//    /**
//     * 过程逻辑
//     *
//     * @param paramMap
//     * @return
//     * @throws ClientException
//     */
//    private static SendSmsResponse sendSms(Map<String, String> paramMap) throws ClientException {
//        //可自助调整超时时间
//        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
//        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//
//        //初始化acsClient,暂不支持region化
//        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEY_ID, ACCESS_KEY_SECRET);
//        IAcsClient acsClient = new DefaultAcsClient(profile);
//
//        //组装请求对象-具体描述见控制台-文档部分内容
//        SendSmsRequest request = new SendSmsRequest();
//
//        //request.setSysRegionId("cn-hangzhou");
//
//        //必填:短信签名-可在短信控制台中找到
//        request.setSignName(SIGN_NAME);
//
//        //必填:待发送手机号
//        request.setPhoneNumbers(paramMap.get("phoneNumber").trim());
//
//        //必填:短信模板-可在短信控制台中找到
//        request.setTemplateCode(paramMap.get("templateCode"));
//
//        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
//        request.setTemplateParam(paramMap.get("templateParam"));
//
//        //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
//        //request.setSmsUpExtendCode(paramMap.get(“extendCode”));
//
//        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
//        //request.setOutId("yourOutId");
//
//        log.info("渠道上报发送阿里云短信请求参数：{}", paramMap);
//
//        SendSmsResponse sendSmsResponse=null;
//        try {
//             sendSmsResponse = acsClient.getAcsResponse(request);
//        }catch (ClientException e) {
//            log.info("渠道上报发送阿里云短信报错信息：{}", e.getMessage());
//            e.printStackTrace();
//        }
//        assert sendSmsResponse != null;
//        log.info("渠道上报发送阿里云短信返回参数：{}", JSONObject.toJSON(sendSmsResponse));
//
//        if (sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode())) {
//            log.info("短信发送成功！");
//        } else {
//            log.info("短信发送失败！");
//        }
//        return sendSmsResponse;
//    }
//
//
//    /**
//     * 发送验证码短信方法，外部调用
//     * <p>
//     * 验证码${code},您正在注册成为${product}用户，感谢您的支持！
//     * templateParam 需要josn格式 替换${code} ${product}内容
//     *
//     * @param phoneNumber 接收者的手机号
//     * @param templateCode 模板code
//     * @param templateParam 模板参数
//     * @return msg
//     * @throws ClientException
//     */
//    public static R sendMsg(String phoneNumber, String templateCode, String templateParam) throws ClientException {
//        templateParam = "{\"code\": \"" + templateParam + "\"}";//转义字符\"
//
//        Map<String, String> paramMap = new HashMap<>();
//        paramMap.put("phoneNumber", phoneNumber);
//        paramMap.put("templateCode", templateCode);
//        paramMap.put("templateParam", templateParam);
//        SendSmsResponse sendSmsResponse = null;
//        sendSmsResponse = sendSms(paramMap);
//        if (!(sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode()))) {
//            if (sendSmsResponse.getCode() == null) {
//                return R.error("发送失败");
//            }
//            if (!sendSmsResponse.getCode().equals("错误")) {
//                return R.error("发送失败");
//            }
//        }
//        return R.success("发送成功");
//    }
//
//    /**
//     * 生成随机数
//     *
//     * @param num 位数
//     * @return
//     */
//    public static String createRandomNum(int num) {
//        String randomNumStr = "";
//        for (int i = 0; i < num; i++) {
//            int randomNum = (int) (Math.random() * 10);
//            randomNumStr += randomNum;
//        }
//        return randomNumStr;
//    }
//
//
//}
